package cn.smxy.client;

import cn.smxy.param.PlantAddParam;
import cn.smxy.param.PlantPageParam;
import cn.smxy.param.PlantRemoveParam;
import cn.smxy.pojo.Category;
import cn.smxy.pojo.Plant;
import cn.smxy.pojo.PlantPicture;
import cn.smxy.util.R;
import cn.smxy.vo.PlantVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@FeignClient(value = "works-service",path = "/works")
public interface PlantClient {
    /**
     * 单种群多科属分页展示接口
     *
     * @param plantPageParam 分页参数
     * @return
     */
    @PostMapping("/page")
    R page(@RequestBody PlantPageParam plantPageParam);

    /**
     * 上传植物作品接口
     *
     * @param plantAddParam 植物实体类，包括多张图片属性
     * @return
     */
    @PostMapping("/add")
    R add(@RequestBody PlantAddParam plantAddParam);

    /**
     * 删除植物作品接口
     *
     * @param plantRemoveParam 用户id和植物id
     * @return
     */
    @PostMapping("/remove")
    R remove(@RequestBody PlantRemoveParam plantRemoveParam);

    /**
     * 修改植物作品接口
     *
     * @param plant 植物实体类
     * @return
     */
    @PutMapping("/update")
    R update(@RequestBody Plant plant);

    /**
     * 获取植物信息接口
     * @param plantId
     * @return
     */
    @GetMapping("/info/{plantId}")
    PlantVo info(@PathVariable Long plantId);

    /**
     * 展示所有植物图片接口
     * @param search
     * @return
     */
    @PostMapping("/picture/all")
    List<PlantPicture> pictureAll(@RequestParam("search") String search);

    /**
     * 获取所有植物列表接口
     * 提供给es
     * @return
     */
    @GetMapping("/list")
    List<Plant> list();


    /**
     * 返回各种群作品数量接口
     * 用户数据可视化
     * @param list
     * @return
     */
    @PostMapping("/count")
    int[] getCount(@RequestBody List<Category> list);

    /**
     * 删除用户对应作品接口
     * @param userId
     * @return
     */
    @DeleteMapping("/remove/{userId}")
    R removeByUserId(@PathVariable Long userId);
}
